#ifndef __RULES_H__
#define __RULES_H__

#include <ntifs.h>

//Enumeration for operations with rules
typedef enum _RULE_CATEGORY
{
    AllowAction,
    HideFolderAction
} RULE_CATEGORY, *PRULE_CATEGORY;

//Rule for processing as it is
typedef struct _RULE
{
    SINGLE_LIST_ENTRY singleListEntry;
    RULE_CATEGORY ruleCategory;

    struct
    {
        PDEVICE_OBJECT pDeviceObject; 
        UNICODE_STRING usParentFolder; 
        UNICODE_STRING usFolderForHide; 
    } HideFolderRule;
} RULE, *PRULE;

NTSTATUS InitializeRulesManager(PUNICODE_STRING pusRegistryPath);
NTSTATUS ReloadRules();
NTSTATUS ProcessRules(IN PDEVICE_OBJECT pDeviceObject, 
                      IN PUNICODE_STRING pusParentDirectory,
                      IN PUNICODE_STRING pusFolderForHide,
                      OUT PRULE pRule);

#endif